Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 開発環境_MounRiver Studio
1  MounRiver Studioはじめに
 1.1 MounRiver Studioの概要
 1.2 WCH-LinkE の設定
 1.3 MounRiver Studioの準備
 1.4 プログラムの書き込み
 1.5 プログラムの格納場所

2. MounRiver Studio関数
 2.1 ch32v20x_adc.h
 2.2 ch32v20x_bkp.h
 2.3 ch32v20x_can.h
 2.4 ch32v20x_crc.h
 2.5 ch32v20x_dbgmcu.h
 2.6 ch32v20x_dma.h
 2.7 ch32v20x_exti.h
 2.8 ch32v20x_flash.h
 2.9 ch32v20x_gpio.h
 2.10 ch32v20x_i2c.h
 2.11 ch32v20x_iwdg.h
 2.12 ch32v20x_misc.h
 2.13 ch32v20x_opa.h
 2.14 ch32v20x_pwr.h
 2.15 ch32v20x_rcc.h
 2.16 ch32v20x_rtc.h
 2.17 ch32v20x_spi.h
 2.18 ch32v20x_tim.h
 2.19 ch32v20x_usart.h
 2.20 ch32v20x_usb.h
 2.21 ch32v20x_wwdg.h

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

1. MounRiver Studioはじめに

(1)MounRiver Studio概要

ホームページの About によると
MounRiver Studioは、Eclipse GNU版をベースに開発されています。
オリジナルのプラットフォームの強力なコード編集機能と便利なコンポーネントフレームワークを維持しながら、組み込みC/C++開発ができる。
そしてツールチェーン開発向けに、インターフェース、機能、操作の修正、最適化を多数施しています。
と記載されており、MounRiver Studioから Windows,MAC,Linux版がダウンロードできます。
私は MounRiverStudio_Linux_X64_V220.deb をダウンロードして、パッケージをGDebiパッケージインストーラでインストール(ファイルをダブルクリック)しました。
起動した状態は下図のようになります。使用方法はいつの日か別のページで記載したい。

(2)WCH-LinkE の設定

WCH-LinkEのモード切替はこの MounRiverStudio から変更ができる。
・WCH-LinkE をパソコンに接続する。
・MounRiverStudio の 「 Flash 」 の 「 Download Configuration 」 を選ぶ。

下図のダイヤログボックスが表示される。
・項目「 Debugger Taeget Mode: 」 で [ ARM ] または [ RISC-V ] が選択出来る。

・今回は [ RISC-V ] を選択して [ Query ] をクリックして [ Apply ] をクリックすることにより WCH-LinkE 内のLED点灯具合によりモード切替された事が判る。

(3)MounRiver Studioの準備

a.今回は CH32V293K8T6 の開発環境として設定する。
・MounRiverStudio の 「 File 」 の 「 New 」 、「 MounRiver Project 」 を選ぶ。

・続いて New MounRiver Project のダイヤログボックスが表示される。
 ・WCH の 項目で [ CH32V203 [RISC-V] ] を選択。
 ・右横の項目で [ CH32V203K8T6 ] を選択。
 ・右下の [ Finish] ボタンをクリックして設定が完了する。

b.プログラミング
・MounRiverStudio の 左側に「EXPLORER」と言う項目がありその下に「User」、「main.c」と言う項目をダブルクリックする。
・MounRiverStudio の 右側でプログラムを書く。下図の例はPA0端子で電圧を 入り/切り するもの。
 

(4)プログラムの書き込み

プログラムが完了すれば、次は書き込みとなる。
a.[ Rebuild project ]をクリックして

 下欄の「Output」 メッセージでエラーが無いことを確認する。

b.[ Download ] ボタンをクリックして

 下欄の「Output」 メッセージでエラーが無いことを確認する。

右写真の様にLEDが点滅を始める。
使用した回路
下の写真は1秒の待ちをプログラムに追加してLEDの点滅で動作を判るようにした。

(5)プログラムの格納場所

ホームディレクトリーに『mounriver-studio-projects』のディレクトリーが作成され、その中にプロジェクト名でディレクトリーが作成され、各フィルが格納される。




2. MounRiver Studio関数

Version:2.2.0のものを記載する。 MounRiver Studioで使用されているGPIO_InitTのような関数は、ペリフェラルライブラリ関数(Peripheral Library function)と呼ばれる。
詳細
ペリフェラル(Peripheral): マイコン(MCU)が持つ、CPUの周辺にある機能ブロックのことです。GPIO(汎用入出力)やタイマー、UARTなどがこれに該当する。
ペリフェラルライブラリ(Peripheral Library): 各ペリフェラルを制御するための関数群をまとめたライブラリだ。
レジスタを直接操作するのではなく、関数を呼び出すだけで設定ができるため、開発を効率化し、可読性を高めることができる。
GPIO_Init: GPIO(汎用入出力)をInit(初期化)するための関数です。これにより、ピンのモード(入力、出力など)、速度、プルアップ・プルダウン抵抗といった設定を行う。
MounRiver Studioは、RISC-Vマイコンを扱うための開発環境であり、メーカーが提供するペリフェラルライブラリを利用してプログラミングを行うのが一般的だ。

端末から開発しているプログラムを格納しているディレクトリー内で ch32v****.h を検索する。

hobbylab@GZBOX:~/mounriver-studio-projects/CH32V203C8T6_GPIO_ex$ ls
CH32V203C8T6_GPIO_ex.launch Core Ld Startup obj
CH32V203C8T6_GPIO_ex.wvproj Debug Peripheral User
hobbylab@GZBOX:~/mounriver-studio-projects/CH32V203C8T6_GPIO_ex$ find -name "ch32v*.h"

上記コマンドを実行すると、下記一覧表のヘッダーファイルが見れる。
※ただし、コメント以降は今回説明様に追加した。
./User/ch32v20x_it.h
./User/ch32v20x_conf.h
./Peripheral/inc/ch32v20x.h
./Peripheral/inc/ch32v20x_adc.h
./Peripheral/inc/ch32v20x_bkp.h
./Peripheral/inc/ch32v20x_can.h
./Peripheral/inc/ch32v20x_crc.h
./Peripheral/inc/ch32v20x_dbgmcu.h
./Peripheral/inc/ch32v20x_dma.h
./Peripheral/inc/ch32v20x_exti.h
./Peripheral/inc/ch32v20x_flash.h
./Peripheral/inc/ch32v20x_gpio.h
./Peripheral/inc/ch32v20x_i2c.h
./Peripheral/inc/ch32v20x_iwdg.h
./Peripheral/inc/ch32v20x_misc.h //NVIC
./Peripheral/inc/ch32v20x_opa.h
./Peripheral/inc/ch32v20x_pwr.h
./Peripheral/inc/ch32v20x_rcc.h
./Peripheral/inc/ch32v20x_rtc.h
./Peripheral/inc/ch32v20x_spi.h
./Peripheral/inc/ch32v20x_tim.h
./Peripheral/inc/ch32v20x_usart.h
./Peripheral/inc/ch32v20x_usb.h
./Peripheral/inc/ch32v20x_wwdg.h

2.1 ch32v20x_adc.h



2.2 ch32v20x_bkp.h



2.3 ch32v20x_can.h



2.4 ch32v20x_crc.h



2.5 ch32v20x_dbgmcu.h



2.6 ch32v20x_dma.h



2.7 ch32v20x_exti.h



2.8 ch32v20x_flash.h



2.9 ch32v20x_gpio.h



2.10 ch32v20x_i2c.h



2.11 ch32v20x_iwdg.h



2.12 ch32v20x_misc.h



2.13 ch32v20x_opa.h



2.14 ch32v20x_pwr.h



2.15 ch32v20x_rcc.h



2.16 ch32v20x_rtc.h



2.17 ch32v20x_spi.h



2.18 ch32v20x_tim.h



2.19 ch32v20x_usart.h



2.20 ch32v20x_usb.h



2.21 ch32v20x_wwdg.h







































更新日 2025/11/24 19:52  管理者 平林 剛Hirabayashi Takeshi